The Internet provides access to almost infinite amounts of information, but current web technology makes it difficult to navigate through large amounts of data. Web pages are also very difficult to build such that they are flexible in size, and generally lack most of rich, highly developed features and functionality found in traditional graphical user interfaces (GUIs).
For example web pages are very difficult to properly format, making it nearly impossible to dynamically resize and adjust them for optimum viewing on different screens, variable browser window sizes and differing user visibility requirements. This is particularly a problem on small or compact screens such as those found on mobile devices.
Currently there exists a number of methods and techniques to workaround these formatting shortcomings. One standard technique is to simply make web pages completely static or rigid in size.
Users can currently navigate web pages by clicking on links or by scrolling. However, if the web page is large and complex, these mechanisms can be cumbersome. The alternative is to break the web page into smaller chunks, which requires the user to frequently request new pages from the web server; this can potentially be very slow depending on the server and the web connection speed. An alternative to this approach is for the web browser to cache raw unformatted data, for example in XML form, then transform the data as needed into HTML however such transformations can also be slow.
Another approach to improving web page functionality is by use of “plug-in” technology, essentially extensions to the web browser. An example is Macromedia's Flash product. The drawback to plug-ins is that it uses, non-standard proprietary software that has to be installed and kept up to date on the user's computer, and web pages have to be written to conform to a specific plug-in technology. Plug-ins can also potentially pose security risks.
Another popular navigational approach is hierarchical menus systems based on dynamic HTML (DHTML) where the web page displays menus of links (URLs) organized in hierarchical fashion. These menus can be navigated and displayed just by cursor/pointer movement, commonly referred to as “spring loaded”.
Present spring loaded menu systems are useful, but have many limitations: They are very difficult to place in a web page anywhere except the top upper left position; They can't be dynamically resized or reconfigured without rebuilding or recalculating the entire menu, a very slow process. They use more screen space and require the pointer device to travel farther than necessary, as each menu group generally needs to have a uniform width, that of the widest menu group item label. Other drawbacks are that such menu systems have no way of displaying menus of non-uniform size and shape, and they also obscure the web page underneath.
Another serious drawback to current DHTML hierarchical menus is that they tend to require a great deal of browser code (also known as product) and version specific code and tricks, making such menu applications hard to maintain and customize.
What is needed is a hierarchical, spring loaded DHTML menu system that can easily fit into any location on a web page, and which smoothly and automatically adjusts its size to fit exactly within the boundaries of its containing web page element or location.